package com.copa.l162;

/**
 * @author copa
 * @createDate 2022-06-23 17:48
 * @function 一次遍历法（仅供参考，时间复杂度不符合题目要求...虽然两个方法在leetcode的时间复杂度都是超过100%...）
 */
public class Test1 {

    public int findPeakElement(int[] nums) {
        if (nums.length == 1) {
            // 如果长度为1必定为峰值
            return 0;
        }
        if (nums.length == 2) {
            // 如果长度为2取最大为峰值
            return nums[0] > nums[1] ? 0 : 1;
        }
        if (nums[0] > nums[1]) {
            // 判断开始处是否为峰值
            return 0;
        }
        for (int i = 1; i < nums.length - 1; i++) {
            int num = nums[i];
            if (nums[i - 1] < num && nums[i + 1] < num) {
                // 判断中间处是否为峰值
                return i;
            }
        }
        // 判断最后处是否为峰值
        return nums[nums.length - 1] > nums[nums.length - 2] ? nums.length - 1 : -1;
    }

    public static void main(String[] args) {
        int[] nums = {1,2,1,3,5,6,4};
        System.out.println(new Test1().findPeakElement(nums));
    }
}
